package dialect

import "reflect"

//dialectsMap 每种数据库及其对应的方言
var dialectsMap = map[string]Dialect{}

//Dialect 每一种数据库都需要有一个对应的方言实现类进行解释
type Dialect interface {
	//DataTypeOf go语言中某个类型映射到当前数据库中是什么类型
	DataTypeOf(typ reflect.Value) string
	//TableExistSQL 为当前数据库构造一个查询表是否存在的sql
	TableExistSQL(tableName string) (string, []interface{})
}

//RegisterDialect 注册方言
func RegisterDialect(name string, dialect Dialect) {
	dialectsMap[name] = dialect
}

//GetDialect 获取某一个数据库对应的方言
func GetDialect(name string) (dialect Dialect, ok bool) {
	dialect, ok = dialectsMap[name]
	return
}
